package Ep05_StackAndQueue._1047;

/**
 * @author Jimmy Zhan WORKSTATION
 * @date 2023/4/13 19:33
 * 说明：直接使用字符串作为栈，省去了转为字符串的操作
 */

public class StringBufferResolve {
    public String removeDuplicates(String s) {
        // 使用StringBuilder作为栈
        StringBuilder res = new StringBuilder();
        // top为 res 的长度，空时为-1，append了一个char后++为0，正好与下标对应，作为指针
        int top = -1;
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            // 当 top >= 0,即栈中有字符时，当前字符如果和栈中字符相等，弹出栈顶字符，同时 top--
            if (top >= 0 && res.charAt(top) == ch){
                res.deleteCharAt(top);
                top--;
            // 否则，将该字符 入栈，同时top++
            } else {
                res.append(ch);
                top++;
            }
        }
        return res.toString();
    }
}
